package com.ruoyi.cs.service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.domain.Response;
import com.ruoyi.common.core.page.ResponsePageInfo;
import com.ruoyi.common.yyyoupin.bean.CallBackInfoVo;
import com.ruoyi.cs.domain.TBackpack;
import com.ruoyi.cs.domain.vo.*;
import com.ruoyi.common.core.domain.AjaxResult;

/**
 * 背包信息Service接口
 * 
 * @author ruoyi
 * @date 2021-03-25
 */
public interface ITBackpackService 
{
    /**
     * 查询背包信息
     * 
     * @param bbId 背包信息ID
     * @return 背包信息
     */
    public TGoodsBackVo selectTBackpackById(String bbId);

    /**
     * 查询背包信息列表
     * 
     * @param tBackpack 背包信息
     * @return 背包信息集合
     */
    public List<TBackpack> selectTBackpackList(TBackpack tBackpack);

    /**
     * 新增背包信息
     * 
     * @param tBackpack 背包信息
     * @return 结果
     */
    public int insertTBackpack(TBackpack tBackpack);

    /**
     * 修改背包信息
     * 
     * @param tBackpack 背包信息
     * @return 结果
     */
    public Response updateTBackpack(TBackpack tBackpack);

    /**
     * 批量删除背包信息
     * 
     * @param bbIds 需要删除的背包信息ID
     * @return 结果
     */
    public int deleteTBackpackByIds(String[] bbIds);

    /**
     * 删除背包信息信息
     * 
     * @param bbId 背包信息ID
     * @return 结果
     */
    public int deleteTBackpackById(String bbId);

    /**
     * 轮播列表
     */
    public List<GoodsBelongingVo> carouselList();

    /**
     * 停用
     * @param bbIds
     * @return
     */
    public int stopTbackpack(String[] bbIds);

    /**
     * 启用
     * @param bbIds
     * @return
     */
    public int enableTbackpack(String[] bbIds);

    /**
     * 饰品兑换
     * @param userId
     * @param bbIds
     * @return
     */
    public Response exchangeGoogs(String userId,List<String> bbIds);

    /**
     * 获取我的背包信息
     * @param tBackpack
     * @return
     */
    public List<TBackpack> getMyTBackpack(TBackPackVo tBackpack);


    /**
     * 游戏记录
     * @param tBackpack
     * @return
     */
    public List<TBackpack> gameRecord(TBackPackVo tBackpack);

    /**
     * 后台用户背包信息
     * @param tBackPackVo
     * @return
     */
    public List<TBackPackVo> tBackpackListBack(TBackPackVo tBackPackVo);

    /**
     * 人工确认发货状态
     * @param type
     * @return
     */
    public Response confirmShipment(String bbId,String type);

    /**
     * 人工审核
     * @param bbId
     * @param auditStatus
     * @return
     */
    public Response audit(String bbId, String auditStatus,String delivery);


    /**
     * 取回详情
     * @param userId
     * @return
     */
    public List<TBackpack> retrieveList(String userId,String goodsName);

    /**
     * 取回统计
     * @return
     */
    public Map<String, BigDecimal> retrieveCount(String userPhone,String userName,String startTime,String endTime);

    /**
     * 批量取回(停用)
     * @param bbIds
     * @param userId
     * @return
     */
//    public Response batchRetrieve(List<String> bbIds,String userId);


    /**
     * 批量取回
     * @param bbIds
     * @param userId
     * @return
     */
    public Response batchRecaption(List<String> bbIds,String userId);

    /**饰品购买的回执方法*/
    public String buyNotify(NotifyBuyVo notifyBuyVo);

    public JSONObject buyNotify(CallBackInfoVo callBackInfoVo);

    /**总开箱次数*/
    public Long openBoxTotal();


    /**
     * 查询背包表开箱前40条数据
     * @param goodsBelongingId
     * @return
     */
    public List<TBackpackOpenBoxTopFortyVo> backPackopenBoxTopForty(String goodsBelongingId);

    /**
     * 查询可购买额度
     *
     * @param userId
     * @return
     */
    public BigDecimal selectUrchaseQuota(String userId);


    /**
     * 后台赠送饰品
     * @return
     */
    public Response<String> backGiveGoods(GiveGoodsVo giveGoodsVo);

    /**
     * 取消人工发货中待发货和待收货的交易订单
     * @param bbId
     * @return
     */
    public Response buyerCancel(String bbId);

    /**
     * 轮播列表
     */
    public List<GoodsBelongingVo> carouselListTop3();

    /**
     * @Desc: 交易失败的饰品初始化
     * @author: zz
     * @date: 2024/2/20
     */
    public void dealFailed(List<TBackPackVo> list);

    /**
     * @Desc: 手动退回背包
     * @author: zz
     * @date: 2024/2/22
     */
    public Response returnBackPack(String bbId,String userId);
}
